package com.hua.designpattern.structural.flyweight;

/**
 * 
 * @author joshua
 *
 *         <pre>
 *
 *享元模式（Flyweight Pattern）主要用于减少创建对象的数量，以减少内存占用和提高性能。
 *享元模式尝试重用现有的同类对象，如果未找到匹配的对象，则创建新对象。
 *
 *优点：大大减少对象的创建，降低系统的内存，使效率提高。
 *缺点：提高了系统的复杂度，需要分离出外部状态和内部状态，而且外部状态要求具有固有化的性质.
 *
 *
 *    REF:
 *        java常量池(JAVA 中的 String，如果有则返回，如果没有则创建一个字符串保存在字符串缓存池里面)。 
 *        数据库的数据池。
 * 
 * 
 *         </pre>
 *
 *
 */
public class TestFlyWeight {

	public static void main(String[] args) {
		new Shape("circle", new Point(1, 2), "RED");
		new Shape("square", new Point(1, 2), "BLUE");
		new Shape("rectangle", new Point(1, 2), "BLUE");
		new Shape("circle1", new Point(1, 2), "RED");
		new Shape("square1", new Point(1, 2), "RED");
		new Shape("rectangle1", new Point(1, 2), "BLUE");
	}

}
